//
// {
//     var a = 5;
// }
// console.log(a)
//
// // 3、解构
// //====3.1 数组解构
// let arr = [1, 2, 3];
// // console.log(arr[0])
// let [x, y, z] = arr;
// console.log(x,y,z)
// console.log(y)
// console.log(z)

const person = {
    name: "jack",
    age: 21,
    language: ['java', 'js', 'css']
}
// // 解构表达式获取值，将 person 里面每一个属性和左边对应赋值
// const {name, age, language} = person;
// // 等价于下面
// // const name = person.name;
// // const age = person.age;
// // const language = person.language;
// // 可以分别打印
// console.log(name);
// console.log(age);
// console.log(language);
// //扩展：如果想要将 name 的值赋值给其他变量，可以如下,nn 是新的变量名
// const {name: nn, age, language} = person;
// console.log(nn);
// console.log(age);
// console.log(language);

// 4、链判断
// let message = {
//     body: {
//         user: {
//             firstName: "哈哈"
//         }
//     }
// };
// 错误的写法
// const  firstName = message.body.user.firstName || 'default';

// 正确的写法
// const firstName = (message
//     && message.body
//     && message.body.user
//     && message.body.user.firstName) || 'default';
// console.log(firstName)

// const firstName = message?.body?.user?.firstName || 'default';
//
// console.log(firstName)

//在 ES6 以前，我们无法给一个函数参数设置默认值，只能采用变通写法：
// function add(a, b) {
//     // 判断 b 是否为空，为空就给默认值 1
//     b = b || 1;
//     return a + b;
// }
// // 传一个参数
// console.log(add(10));
//
// //现在可以这么写：直接给参数写上默认值，没传就会自动使用默认值
// function add2(a, b = 1) {
//     return a + b;
// }
//
// // 传一个参数
// console.log(add2(1,0));

//以前声明一个方法
// var print = function (obj) {
// console.log(obj);
// }
// // 可以简写为：
// // let print = obj => console.log(obj);
// // 测试调用
// print(1010);

// 两个参数的情况：
// let sum = function (a, b) {
//     return a + b;
// }
// console.log(sum(1, 1));
// // 简写为：
// //当只有一行语句，并且需要返回结果时，可以省略 {} , 结果会自动返回。
// let sum2 = (a, b) => a + b;
// //测试调用
// console.log(sum2(10, 10));//20
// // 代码不止一行，可以用`{}`括起来
// let sum3 = (a, b) => {
//     c = a + b;
//     return c;
// };
// //测试调用
// console.log(sum3(10, 20));//30


// let info = "你好，我的名字是：【"+name+"】，年龄是：【"+age+"】，邮箱是：【】"
// console.log(info);

// # 模板字符串的写法
// let info = `你好，我的名字是：${person.name}，年龄是：${person.age}，邮箱是：${person.email}`
// console.log(info);

// 8、Promise
// let url = "https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json";
// console.log(1)
// // Promise
// let promise = fetch(url); //网络 3s
// promise.then(resp => {
//     console.log("响应数据",resp)
//     resp.json().then(data => {
//         console.log(data)
//     })
// })
//
// promise.catch(err => {
//     console.log("远程抓取失败", err)
// })
//
//
// console.log(2)


// async function func1() {
//     //业务、计算
//     let x = 10;
//     if (x % 2 === 0) {
//         return x; //正常返回
//     } else {
//         throw new Error("x不是偶数") //异常返回
//     }
// }
// func1().then(data => console.log("then", data)).catch(err => console.log("err", err))




















